package test0ne.多线程;

/**
 * 理解原子性, 这种情况下 运行结果会出现多个重复的数，是因为 主存 和 私有内存原因
 * 前一个线程改了后，后一个线程不知道
 */
public class Atomic {
    public static void main(String[] args) {
        AtomicDemo atomicDemo = new AtomicDemo();
        for (int i = 0; i < 10; i++) {
            new Thread(atomicDemo).start();
        }

    }


    private static class AtomicDemo implements Runnable{
        private volatile int i = 0;

        public int getI() {
            return i++;
        }

        @Override
        public void run() {
            try {
                Thread.sleep(100);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
            System.out.println(getI());
        }
    }
}
